package com.doit.day06

import scala.collection.immutable
import scala.io.Source
/**
 * 1,4
 *2,5
  *4,6
  *2,4
  *3,6
  *4,6
  *1,5
 *需求：1,4==》 1-4 ==》 1-2   2-3  3-4  统计1-2有多少个，2-3有多少个，3-4有多少个
 *==》最后的结果大概涨什么样子？  key,value==》 1-2  10  ， 2-3  5 ==》 就是一个wordcount
 *==》 得把word都放在一个集合里，然后对他groupby   map。。。。
 *==》 word哪来？转换==》 读文件 ==》 1,4==》split切割==》 1   4
 *==》1   4 ==》怎么得到 1-2   2-3   3-4  ==》 1 to 4 ==》 1 2 3 4
 *==》 1 2 3 4 =》 1-2  2-3  3-4   for循环  一个行不行？
 */
object _03_线段案例 {
  def main(args: Array[String]): Unit = {
    //1.读文件  2,5
    val list: List[String] = Source.fromFile("data/line.txt")
      .getLines()
      .toList

    //2.对一行数据进行切割映射
    val startEnd: List[Array[String]] = list.map(line => line.split(","))

    //3.转变，将数组中的1 和4 转变成1 2 3 4的形式，或者直接一步到位，转变成1-2  2-3  3-4
    val list1: List[Array[String]] = startEnd.map(arr => {
      val start: Int = arr(0).toInt
      val end: Int = arr(1).toInt


      // 1  4
      val range: Range = start until end
      //1
      val res: immutable.IndexedSeq[String] = for (elem <- range) yield {
        //1-2   2-3  3-4
        elem + "-" + (elem + 1)
      }
      res.toArray
    })

    //要压平，将每个小集合里面的所有元素都放在大的集合中
    val flatten: List[String] = list1.flatten

    //剩下的就是一个wordcount
    flatten.groupBy(word=>word)
      .map(tp=>(tp._1,tp._2.length))
      .foreach(println)
  }
}
